package com.lagou.work01
/*
第一题、百元喝酒
作业要求：每瓶啤酒2元，3个空酒瓶或者5个瓶盖可换1瓶啤酒。100元最多可喝多少瓶啤酒？（不允许借啤酒）
思路：利用递归算法，一次性买完，然后递归算出瓶盖和空瓶能换的啤酒数
 */
object BuyBeer {

  def replaceBottle(sum:Int,bottle: Int, cap: Int):Int = {

    var b1 = bottle / 3 //每3个空瓶换
    var c1 = cap / 5 //每5个瓶盖换
    var b2 = bottle % 3 //每3空瓶换完后剩余空瓶数
    var c2 = cap % 5 //每5瓶盖换完后剩余瓶盖数

    if(bottle < 3 && cap < 5)
      return sum //sum为已换瓶数，初始为0
    else
      println(s"本次已换${b1+c1}瓶 换完剩余${b1+c1+b2}个空瓶 换完剩余${b1+c1+c2}个瓶盖 当前已换${sum}瓶啤酒")
      return replaceBottle(b1+c1+sum, b1+c1+b2, b1+c1+c2)
  }

  def main(args: Array[String]): Unit = {
    //首次100元买几瓶
    val money = 100
    val buy = money / 2
    println(s"首次买了${buy}瓶啤酒")
    println(s"100元最多可以喝 ${buy + replaceBottle(0,buy,buy)} 瓶啤酒")
  }

}
